package br.com.onbrain.bancodedados;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
//teste

public class AtualizarBancoObras extends AsyncTask<String, String, String> {
	private Context ctx;
	AtualizarBancoObrasListiner listiner;
	private ProgressDialog progress;
	private static final String URL_STRING = "http://hemersonoas.besaba.com/listarobras.php";
	//private static final String URL_STRING = "http://hemersonoas.besaba.com/listarobra.php";
	String resultado;

	public AtualizarBancoObras(Context ctx, AtualizarBancoObrasListiner listiner) {
		this.ctx = ctx;
		this.listiner = listiner;
	}

	@Override
	protected void onPreExecute() {
		progress = new ProgressDialog(ctx);
		progress.setMessage("Conectando-se ao servidor...");
		progress.setCancelable(false);
		progress.show();
		
	}

	@Override
	protected String doInBackground(String... params) {
		progress.setMessage("Conectando-se ao servidor...");
		progress.show();
		try {
			resultado = consultaServido();
			publishProgress("Atualizando Banco...");
			insereBanco(resultado);
			publishProgress("Banco Atualizado!");
			
		} catch (IOException e) {

			e.printStackTrace();
		}
		return resultado;
	}

	@Override
	protected void onProgressUpdate(String... values) {
		progress.setMessage(values[0]);
	}
	
	@Override
	protected void onPostExecute(String result) {
		listiner.onAtualizacaoConcluida(result);
		progress.dismiss();

	}

	private String consultaServido() throws IOException {

		InputStream is = null;
		try {

			URL url = new URL(URL_STRING);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			conn.setReadTimeout(1000);
			conn.setConnectTimeout(15000);
			conn.setRequestMethod("GET");
			conn.setDoInput(true);
			conn.connect();
			conn.getResponseCode();

			is = conn.getInputStream();

			Reader reader = null;
			reader = new InputStreamReader(is);
			char[] buffer = new char[2048];
			reader.read(buffer);
			return new String(buffer);

		} finally {
			if (is != null) {
				is.close();
			}
			// TODO: handle exception
		}

	}

	public void insereBanco(String texto) {
		ObrasDAO obrasDao = new ObrasDAO(ctx);
		ObrasVO obrasVO = new ObrasVO();
		char caracter_lido = '?';
		String nome_obra = "";
		for (int i = 0; i < texto.length(); i++) {
			caracter_lido = texto.charAt(i);
			if (caracter_lido != '#') {
				Log.i("Caractere Nome", "" + caracter_lido);
				Character.toUpperCase(caracter_lido);
				nome_obra += caracter_lido;
			} else {
				obrasVO.setNome(nome_obra);
				if (obrasDao.insert(obrasVO))
					;
				Log.i("Nome da Obra", nome_obra);
				nome_obra = "";
			}
		}
	}

	public interface AtualizarBancoObrasListiner {
		void onAtualizacaoConcluida(String result);
	}
}
